// On va utiliser le module express qui permet de faire un serveur   
// web plus complet, capable de servir une page par defaut,  
// des pages qui contiennent des css, qui incluent des fichiers   
// javascript etc  
var express = require('express');    
    
// Cr�ation du serveur, page par defait, port  
var app = express.createServer();    
app.configure(function(){    
    app.use(express.static(__dirname + '/'));    
});    
app.get('/', function(req, res, next){    
    res.render('index.html');    
});    
app.listen(8080);    
    
// Cr�ation d'un serveur de socket via nowJS    
var nowjs = require("now");    
var everyone = nowjs.initialize(app); 
var formes = new Array();

nowjs.on("connect", function(){    
    console.log("Joined: " + this.now.name);
    //vérifie s'il y a des formes qui ont été envoyées par d'autres utilisateurs
    if (formes.length>0){
        for (i in formes){
            //pour chaque forme trouvée
            everyone.getUsers(function (users) { 
                //ne renvoyer les formes qu'au nouvel utilisateur
                users.pop();
                everyone.exclude(users).now.receiveForm(formes[i], false);
            });
        }
    }
});
  
    
nowjs.on("disconnect", function(){    
    console.log("Left: " + this.now.name );
    //Vérifie si des utilisateurs sont encore connectés
    everyone.getUsers(function (users) { 
        //s'il n'y a plus personne
        if (users.length==0){
            //réinitialiser les formes
            formes = new Array();
        }
    });
});    
    
// Fonction qui renvoie un message � tout les clients,  
// en appelant la fonction receiveMessage d�finie dans  
// les clients    
everyone.now.distributeMessage = function(message){  
    everyone.now.receiveMessage(this.now.name, message);  
}
everyone.now.distributeForm = function(message, tous){
    // ajouter chaque forme/action envoyée dans le tableau
    if (message.type=='effacer'){
        formes = new Array();
    }
    else{ 
        if(message.type=='annuler'){
            var j = message.j;
            if (formes[j].type=='pencil'){
                while (formes[j].type=='pencil' && j>0){
                    formes.splice(j,1);
                    j--;
                }
            }
            else{
                // idem si c'est la gomme
                if (formes[j].type=='gommer'){
                    while(formes[j].type =='gommer'  && j>0){                   
                        formes.splice(j,1);
                        j--;
                    }
                }
                else{
                    // sinon supprimer j directement
                    formes.splice(j,1);
                }
            }
        }                  
        formes.push(message);
    }
             
    //vérifie si le message est à renvoyer à tout le monde ou pas
    if (tous == true){
        everyone.now.receiveForm(message, tous);
    }
    else{
        everyone.exclude(this.user.clientId).now.receiveForm(message,tous);
    }
   
}
